using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;
using Umdf.ComInterop;

namespace Umdf.ComInterop
{
    [ComImport, Guid("27E78451-41C1-47FD-A50D-4D3E97D35B30"), InterfaceType((short)1)]
    public interface ISideShowClassExtension
    {
        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
        void Initialize([In/*, MarshalAs(UnmanagedType.IUnknown)*/] IntPtr pWdfDeviceUnknown, [In/*, MarshalAs(UnmanagedType.IUnknown)*/] IntPtr pSideShowDriverUnknown);
        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
        void Uninitialize([In, MarshalAs(UnmanagedType.IUnknown)] object pWdfDeviceUnknown);
        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
        void OnProcessIoControl([In] IWDFIoQueue pWdfQueue, [In] IWDFIoRequest pWdfRequest, [In] uint ControlCode, [In, ComAliasName("ExampleLib.ULONG_PTR")] uint InputBufferSizeInBytes, [In, ComAliasName("ExampleLib.ULONG_PTR")] uint OutputBufferSizeInBytes, out uint pcbWritten);
    }

 

}
